iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0

胎嘎侯

接下來幾天的日記都會以閱讀官方文件為主,以自己的方式整理不熟或是想加強印象的部分。先前總是想到要做什麼才去查文件,後來想想學習順序應該是先看文件再以關鍵字去查比較理想,故想藉由這次的鐵人賽好好督促自己把文件仔細看過一次,內化到自己的腦海中。

Middleware

Middleware在官方文件中的解釋為,提供一種方便的機制來過濾進入應用程序中的HTTP Request。前面說的是Middleware的基本功能,實際上Middleware很常用在用戶身分驗證功能上。

那麼Middleware是如何運作的呢?我做了一張圖用比較生活化的方式來解釋。

今天我要去拜訪某家公司,到了門口警衛發出進入請求(Request)要驗證你訪客的身分是否為真(middleware),因此先看看你的身分是否安全。如果你的身分無誤,就會指引(Routes)你到公司某個部門進行拜訪或進行業務交流(Response);如果你的身分有問題,門口警衛直接拒絕你的請求,或請你在會客室等待身分確認。在實際狀況中,如果用戶未能通過認證,middleware會把用戶重新導到登錄頁面,或者return一個字串說明驗證未通過。

Middleware

在這個例子中Middleware只有一層,但是其實它的概念很像一層層的洋蔥,你可能寫了很多要驗證的請求,因此Middleware會不斷的傳遞給下一個Middleware,直到沒有Middleware,進入應用程序前為止。

Before & After Middleware

Before & After Middleware意即在請求之前還是之後,以BeforeMiddlewareAfterMiddleware表示。

  • 將$request傳給$next(),代表將它交給下一個的middleware,依序往下傳遞直到沒有Middleware可以轉傳,最後到達應用程式。

  • handle方法負責接收一個Illuminate Request 物件,並回傳Illuminate Response 物件。

BeforeMiddleware

<?php
//在應用程序處理請求"之前"執行某些任務
namespace App\Http\Middleware;

use Closure;

class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
        // Perform action

        return $next($request); 
    }
}

AfterMiddleware

在應用程序處理請求"後"才交由Middleware執行其任務,最後返回$response給用戶。

<?php
//在應用程序處理請求"後"執行其任務
namespace App\Http\Middleware;

use Closure;

class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        // Perform action

        return $response; 
    }
}

今天對Middleware的筆記就到這裡,如有說明不妥之處,代表我還不夠熟悉,歡迎在下面留言~那我們明天見囉!


上一篇
Day15-Laravel新手基礎訓- The Basic Routing
下一篇
Day17-Laravel新手基礎訓- The Basic Controller
系列文
後端PHP+Laravel--新手實戰日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言